<?php
/**
 * 彩信图片服务类
 */
class SmsImgService extends Service {
   	var $uid;
	var $isAdmin;
	var $baseuploadpath = 'data/uploads';//基本的上传路径
	var $basesmsimgsendpath = 'templet/sms/send';//确定的将要发送的图片保存路径
	var $mms_bgimg_relpath	= 'templet/sms/bg';//默认背景图片路径
	var $mms_bgimg	= 'system/mms_bg.jpg';//默认背景图片路径
	/**
    function getSavePath(){
        $savePath = SITE_PATH.'/'.$this->baseuploadpath.'/'.$this->_getTempSavePath();
        if( !file_exists( $savePath ) ) mk_dir( $savePath  );
        return $savePath;
    }
    **/
	/**
	 * 彩信模板相对$baseuploadpath的保存路径。
	 */
    private function _getTempSavePath(){
    	if($this->isAdmin==true){
    		return 'templet/sms/system';//系统保存图片位置
    	}else{
    		if($this->uid > 0){
    			return 'templet/sms/user/'.$this->uid;//登陆用户保存图片位置
    		}else{
	    		return 'templet/sms/user/0';//登陆用户保存图片位置
	    				//return 'templet/sms/temp/'.time();//未登陆临时保存图片位置
	   		}
		}
    }
    
    //上传头像，做头像剪切准备
    function upload(){
    	return service('ImgEdit')->upload($this->baseuploadpath,$this->_getTempSavePath(),'original',400 , 320);
  	}
    
	//保存图片
	function dosave(){
		return service('ImgEdit')->dosave($this->baseuploadpath,$this->_getTempSavePath(),time(),240,152);
	}

	/*	添加彩信表情图表到目标图片上 
	 *	@param	$ground_im		北京图像文件对象.即用	$func	=	($ext != 'jpg')?'imagecreatefrom'.$ext:'imagecreatefromjpeg';
	 *	@param	$water_path		水印图片完整路径
	 *	@param	$xOffset		水印图片的偏移量(X)
	 *	@param	$yOffset		水印图片的偏移量(Y)
	 *	@return 返回处理后的$ground_im变量。
	 */
	function writeWaterIcon($ground_im,$waterfpath,$xOffset,$yOffset){
		return service('ImgEdit')->writeImg($ground_im,$waterfpath,$xOffset,$yOffset);
	}
		
	
	/*	在背景图片上画水印和文字。
	 *	@param	$bgimgfpath		背景图像文件完整路径。
	 *	@param	$waterfpath		水印图片完整路径
	 *	@param	$toaddtext		要在图片上加的文字
	 *	@param	$xyOffset		水印图片的偏移量($xyOffset[0]-X方向 $xyOffset[1]-Y方向)
	 *	@param	$rgb			字体颜色，数组($rgb[0] $rgb[1] $rgb[2])三色十进制值。
	 *	@param	$font_file		字体文件完整路径，默认值SITE_PATH."/ttffont/msyh.ttf"
	 *	@param	$font_size		字体大小，默认值10。
	 *	@return 返回$bgimgfpath图片处理后的图像数据变量，即imagecreate****()返回类型的变量。
	 */
	public function writeTxtImg2Bg($bgimgfpath,$waterfpath,$toaddtext,$xyOffset,$rgb,$font_file=null,$font_size=10) {
		return service('ImgEdit')->writeTxtImg2Bg($bgimgfpath,$waterfpath,$toaddtext,$xyOffset,$rgb,$font_file,$font_size);
	}
		
	/**
	 *	保存用户，提交的临时生成的魔板。返回生成后的图片路径。
	 *	通过两个图片tmp_smsimg.***和tmp_smsimg1.***交替生成临时的魔板图片（防止浏览器不加载图片）。
	 *	@param	$im						要保存的图片数据。
	 *	@param	$oldbgfpath		生成$im变量的图片路径。相对SITE_PATH.'/data/uploads/'的路径。
	**/
	public function doSaveUserTmpTemplet($im,$oldbgfpath){
		$extend = pathinfo($oldbgfpath);   
		$ext = strtolower($extend["extension"]); 
		$tmp_smsimgPath = $this->_getTempSavePath().'/tmp_smsimg.'.$ext;
		if($oldbgfpath==$tmp_smsimgPath)
			$tmp_smsimgPath = $this->_getTempSavePath().'/tmp_smsimg1.'.$ext;
		//echo SITE_PATH..$this->baseuploadpath.$tmp_smsimgPath;
		//if(empty($im))echo 'im is null';
		@unlink($tmp_smsimgPath);
		$func1	=	($ext != 'jpg')?'image'.$ext:'imagejpeg';
		call_user_func($func1,$im,SITE_PATH.'/'.$this->baseuploadpath.'/'.$tmp_smsimgPath);
		return $tmp_smsimgPath;
	}

	/**
	 *	保存用户，提交的预览图片编辑后的结果。返回生成后的图片路径。
	 *	@param	$im						要保存的图片数据。
	**/
	public function doSaveUserPreviewTemplet($im,$oldbgfpath){
		$extend = pathinfo($oldbgfpath);   
		$ext = strtolower($extend["extension"]); 
		$tmp_smsimgPath = $this->_getTempSavePath().'/tmp_preview.'.$ext;
		@unlink($tmp_smsimgPath);
		$func1	=	($ext != 'jpg')?'image'.$ext:'imagejpeg';
		call_user_func($func1,$im,SITE_PATH.'/'.$this->baseuploadpath.'/'.$tmp_smsimgPath);
		return $tmp_smsimgPath;
	}
		
	/** 统一将客户端请求的sms图片相关数据进行转换 **/
	public function parseRequestData($xyOffset,$textcolor,$font_file,$font_size){
		$xyOffset = explode(',',$xyOffset);
	   	$xyOffset[0]=$xyOffset[0]*1+1;//加5偏移量，因页面padding:5px
	    $xyOffset[1]=152+$xyOffset[1]*1+3;
	    $rgb = explode(',',$textcolor);
	     	
	    /** 加载需要的字体文件，最好将需要的字体文件提取出来保存到指定目录例如（ttffont） **/ 
		$font_file = SITE_PATH."/ttffont/msyh.ttf"; 
		$font_size = 10;
		$result['xyOffset']		=$xyOffset;
		$result['rgb']			=$rgb;
		$result['font_file']	=$font_file;
		$result['font_size']	=$font_size;
		return $result;
	}
		
		
	/**
	 * 保存将要发送的图片到，发送图片统一保存目录。
	 * $smsdata 	= $_SESSION['order_data']['smsdata'];
	 * @return	返回生成的图片路径
	 */
	public function saveSmsImg4Send($order_id,$smsdata){
		$smsimg 	= $smsdata->smsimg;
		$smstext 	= $smsdata->smstext;
		$xyOffset 	= $smsdata->xyOffset;
	 	$textcolor 	= $smsdata->textcolor;
		$smsicon 	= $smsdata->smsicon;//表情图片路径
	
		//$smsImgDao = service('SmsImg');
	 	$imgdata_ = $this->parseRequestData($xyOffset,$textcolor,$font_file,$font_size);
		$im = service('ImgEdit')->writeTxtImg2Bg(SITE_PATH.getAttachUrl($smsimg),SITE_PATH.$smsicon
	     															,$smstext,$imgdata_['xyOffset'],$imgdata_['rgb']
																	,$imgdata_['font_file'],$imgdata_['font_size']);
			
		$extend = pathinfo($smsimg);   
		$ext = strtolower($extend["extension"]); 
		if('jpeg'==$ext)$ext = 'jpg';//将jpeg格式保存为jpg格式。
		$tmp_smsimgPath = $this->basesmsimgsendpath.'/'.$order_id.'-'.time().'.'.$ext;
		@unlink($tmp_smsimgPath);
		$func1	=	($ext != 'jpg')?'image'.$ext:'imagejpeg';
		call_user_func($func1,$im,SITE_PATH.'/'.$this->baseuploadpath.'/'.$tmp_smsimgPath);
		imagedestroy($im);
		return $tmp_smsimgPath;
	}
		
	
	function getMmsBg($shelfid){
		$extend1 = pathinfo(SITE_PATH.getAttachUrl($this->mms_bgimg));   
		$ext1 = strtolower($extend1["extension"]);
		$bgpath = $this->mms_bgimg_relpath.'/bg'.$shelfid.'.'.$ext1;//请求的背景图，相对路径。
		if( file_exists( SITE_PATH.getAttachUrl($bgpath) ) ){
			//return $bgpath;//已存在对应商品mms背景图则返回。
		}
		
		$product = service('Product')->getByShelfId($shelfid);
		if(empty($product))return $this->mms_bgimg;
		$goods_icon = SITE_PATH.getAttachUrl($product['goods_icon']);
		$brand_icon = SITE_PATH.getAttachUrl($product['partner_brand_icon']);
		if(!empty($product['goods_icon'])&&file_exists($goods_icon)){
			$extend = pathinfo($goods_icon);   
			$ext = strtolower($extend["extension"]); 
			if('jpeg'==$ext)$ext = 'jpg';//将jpeg格式保存为jpg格式。
			$goods_iconX100 =  $extend['dirname'].'/'.$extend['filename'].'_100X100.'.$ext;//生成的商品100X100图片与商品图片报存在一个目录下。
			
			$extendb = pathinfo($brand_icon);   
			$extb = strtolower($extendb["extension"]); 
			if('jpeg'==$extb)$extb = 'jpg';//将jpeg格式保存为jpg格式。
			$brand_iconX30 =  $extendb['dirname'].'/'.$extendb['filename'].'_30X30.'.$extb;//生成的商品100X100图片与商品图片报存在一个目录下。
			
			//echo 'bgpath='.$bgpath.'<br>';
			//echo 'goods_icon='.$goods_icon.'<br>';
			//echo 'goods_iconX100='.$goods_iconX100.'<br>';
			include_once( QUICK_ADDONE_PATH.'/libs/Image.class.php' );
			Image::thumb( $goods_icon, $goods_iconX100 , '' , 110 , 110 );
			Image::thumb( $brand_icon, $brand_iconX30 , '' , 40 , 40 );
			if( !file_exists( $goods_iconX100 ) ){
				return $this->mms_bgimg;
			}
			//thumb($image,$thumbname,$type='',$maxWidth=200,$maxHeight=50,$interlace=true)
			$im = service('ImgEdit')->writeTxtImg2Bg(SITE_PATH.getAttachUrl($this->mms_bgimg),$goods_iconX100
		     										,'',array(12, 193),array('00','00','00')
		     										,null,16,array(65, 180));
		    if( file_exists( $brand_iconX30 ) )service('ImgEdit')->writeImg($im,$brand_iconX30,14,262);
			//$extend = pathinfo(SITE_PATH.getAttachUrl($this->mms_bgimg));   
			//$ext = strtolower($extend["extension"]);
			$savepath = SITE_PATH.getAttachUrl($bgpath);
			@unlink($savepath);
			$func1	=	($ext1 != 'jpg')?'image'.$ext1:'imagejpeg';
			call_user_func($func1,$im,$savepath);
			imagedestroy($im);
			return $bgpath;
		}
		return $this->mms_bgimg;
	}
	
	/**
	 * 获得要发送的彩信图片。
	 * @param String $shelfid		上架商品id
	 * @param String $passcode		商品券码
	 * @param String $namecard		贺卡图片路径（相对资源文件保存路径的相对路径）
	 */
	function getMmsCard($shelfid,$passcode,$namecard,$couponid){
		$relbgpath = $this->getMmsBg($shelfid);
		//echo "namecard=".SITE_PATH.getAttachUrl($namecard);
		$im = service('ImgEdit')->writeTxtImg2Bg(SITE_PATH.getAttachUrl($relbgpath),SITE_PATH.getAttachUrl($namecard)
		     										,$passcode,array(0, 0),array('00','00','00')
		     										,null,12,array(65, 175));
		//if( file_exists( $brand_iconX30 ) )service('ImgEdit')->writeImg($im,$brand_iconX30,14,260);
		$extend = pathinfo(SITE_PATH.getAttachUrl($relbgpath));   
		$ext = strtolower($extend["extension"]);
		$bgpath = 'templet/sms/zip/'.$extend['filename'].'_'.$couponid.'.'.$ext;//生成的图片保存路径
		$savepath = SITE_PATH.getAttachUrl($bgpath);
		@unlink($savepath);
		$func1	=	($ext != 'jpg')?'image'.$ext:'imagejpeg';
		call_user_func($func1,$im,$savepath);
		imagedestroy($im);
		return $bgpath;
	}
	
	
	//服务初始化
	public function init($data = '') {
	}
		
	//运行服务，系统服务自动运行
	public function run() {
	}
}